<?php

/**
 * 
 * @desc 加密解密类
 * @author keluo <pycorvn@yeah.net>
 * @link http://www.scabish.cn/framework 
 */

class SCEncryption {

	/**
	 * 加密
	 * @param string $txt 要加密的字符串
	 * @param string $key 加密密钥
	 * @return string
	 */
	public static function encrypt($txt,$key) {
		srand((double)microtime()*1000000);
		$encrypt_key = md5(rand(0,32000));
		$ctr=0;
		$tmp = '';
		for ($i=0;$i<strlen($txt);$i++) {
			if ($ctr==strlen($encrypt_key)) $ctr=0;
			$tmp.= substr($encrypt_key,$ctr,1).(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
			$ctr++;
		}
		return base64_encode(self::keyED($tmp,$key));
	}  

	/**
	 * 解密
	 * @param string $txt 要解密的字符串
	 * @param string $key 解密密钥
	 * @return string
	 */
	public static function decrypt($txt,$key) {
		$txt = self::keyED(base64_decode($txt),$key);
		$tmp = '';
		for ($i=0;$i<strlen($txt);$i++) {
			$md5 = substr($txt,$i,1);
			$i++;
			$tmp.= (substr($txt,$i,1) ^ $md5);
		}
		return $tmp;
	}
	
	private static function keyED($txt,$encrypt_key) {
		$encrypt_key = md5($encrypt_key);
		$ctr=0;
		$tmp = '';
		for ($i=0;$i<strlen($txt);$i++)
		{
			if ($ctr==strlen($encrypt_key)) $ctr=0;
			$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
			$ctr++;
		}  
		return $tmp;
	}  	
}